class Solution {
public:
/*
  // 申请空间 O(n)  O(n)
    string reverseLeftWords(string s, int n) {
        string str;
        n %= s.size();
        for(int i = n; i < s.size(); ++i)
            str.push_back(s[i]);
        for(int i = 0; i < n; ++i)
            str.push_back(s[i]);
        return str;
    }
*/

/*
  // 空间复杂度O(1)遍历
    string reverseLeftWords(string s, int n) {
        n %= s.size();
        for(int i = 0; i < n; ++i)
            s.push_back(s[i]);
        s.erase(0, n);
        return s;
    }
*/

  // 反转反转反转  O(n) O(1)
    string reverseLeftWords(string s, int n) {
        n %= s.size();
        // 反转前 n 个字符
        reverse(s.begin(), s.begin() + n);  // reverse 左闭右开
        // 反转后面其余字符
        reverse(s.begin()+n, s.end());
        // 整体反转
        reverse(s.begin(), s.end());
    }
};